// 对项目的axios进行二次封装
import axios from 'axios'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css' //引入其样式文件


// 创建axios的实例化对象  
const request = axios.create({
  baseURL: '/mock',//基础路径
  timeout: 10000,//超时时间
});

// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 请求发送成功执行的回调函数
  // config这是包含这次请求的所有信息所组成的一个对象(请求报文)
  // 开启进度条
  // Nprogress.start()
  // 之后可能会在这里加一些公共参数
  return config;
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  // 响应成功执行的回调函数
  // response这是响应的所有的信息所组成的一个对象(响应报文)
  // 统一处理响应的结果 方便组件使用数据
  // 关闭进度条
  // Nprogress.done()
  return response.data;
})
// , function (error) {
//   // 响应失败执行的回调函数
//   // 统一处理错误
//   // 拿到错误状态码 根据状态码做出不同提示
//   // return error.response.status

//   // if (error.response.status == 401) {
//   //   alert('未授权')
//   // } else if (error.response.status == 403) {
//   //   alert('禁止访问')
//   // } else if (error.response.status == 404) {
//   //   // alert('错误访问')
//   //   return {code:404}
//   // } else if (error.response.status == 500) {
//   //   alert('服务器出错')
//   // }
//   // 关闭进度条
//   Nprogress.done()
//   // return error.response.status
//   // 不用再组件中自己处理错误 
//   return new Promise(() => { return error.response.status}); //返回一个pending的promise
// });

export default request